/* generic implementations are provided so that one can implement
coding methods without needing to know the class of the coder */
@interface NSCoder (NSExtendedCoder)
- (void)encodeObject:object;
/* Shortcut for [self encodeValuesOfObjCTypes:@encode(typeof(object)) at:&object];
object may be nil;
Note however that some subclasses may have a more efficient encoding when using -encodeObject: and therefore that decoding must be done with -decodeObject */
- (void)encodePropertyList:plist;
/* Encodes the plist serialized as an NSData.
Note however that some subclasses may have a more efficient encoding when using -encodePropertyList: and therefore that decoding must be done with -decodePropertyList;
PList are constrained to be (and to contain) objects that are one of: NSDictionary, NSArray, NSString, NSData;
Mutability and class are lost upon decoding; Other restrictions apply: no cycles, dags transformed to trees.
/* Last arguments specify addresses of values to be written. It might seem surprising to specify values by address, but this is extremely convenient for copy-paste with -decodeValuesOfObjCTypes calls. A more down-to-the-earth cause for this passing of addresses is that values of arbitrary size is not well supported in ANSI C for functions with variable number of arguments. */